Data toevoegen

Het toevoegen van initiële gegevens aan je API is een belangrijke stap. Dit zijn voorbeeld-items die je toevoegt aan je database zodat je app direct iets te tonen heeft en goed kan functioneren tijdens het ontwikkelen en testen. Denk aan een paar gebruikers, categorieën of producten die standaard al in je database staan. Dit zorgt dat je applicatie meteen bruikbaar is — gebruikers hoeven niet eerst zelf de hele database handmatig vullen voordat ze iets kunnen doen. Dat is verwarrend én tijdrovend, vooral bij het testen. In Gebruikers gaan we in op het creëren van test-gebruikers.

De data-sectie

In het JSON-configuratiebestand worden gegevens toegevoegd in de data-sectie. Deze sectie moet objecten bevatten voor elke collectie die je hebt gedefinieerd:

{
  "collections": [
    {
      "name": "products",
      "fields": [
        // blauwdruk voor velden hier
      ],
      "permissions": {}
    },
    {
      "name": "categories",
      "fields": [
        // blauwdruk voor velden hier
      ],
      "permissions": {}
    }
  ],
  "users": [
    // Je gebruikers hier
  ],
  "data": {
    "products": [
      // Daadwerkelijke data voor jouw producten hier
    ],
    "categories": [
      // Daadwerkelijke data voor jouw categorieën hier
    ]
  }
}

Gegevens toevoegen aan een collectie

Voor elke collectie voeg je een array van objecten toe. De objecten moeten de exacte structuur volgen die je hebt gedefinieerd in je collectie:

{
  "collections": [
    {
      "name": "categories",
      "fields": [
        {
          "name": "id",
          "type": "number",
          "required": true
        },
        {
          "name": "name",
          "type": "string",
          "required": true
        },
        {
          "name": "description",
          "type": "string",
          "required": false,
          "max": 200
        }
      ],
      "permissions": {}
    }
  ],
  "users": [
    // Gebruikers komen hier
  ],
  "data": {
    "categories": [
      {
        "id": 1,
        "name": "Elektronica",
        "description": "Elektronische apparaten"
      },
      {
        "id": 2,
        "name": "Boeken",
        "description": "Leesmateriaal"
      }
    ]
  }
}

Gebruik voor de id's altijd een getal dat incrementeert. Wanneer je gebruik maakt van referenties - omdat je producten verwijzen naar een specifieke categorie middels een categoryId-veld - moet dat getal verwijzen naar een bestaande id uit de categories collectie. Het is dus belangrijk om erop te letten dat alle referentie-ID's daadwerkelijk bestaan in de gerelateerde collectie. Als we één van onze producten een categoryId van 234 geven, terwijl we geen categorie hebben met deze id, gaat dit mis.

Volledig voorbeeld

Hier is een uitgebreider voorbeeld van een data-sectie voor een webshop met producten en categorieën:

{
  "collections": [
    {
      "name": "categories",
      "fields": [
        {
          "name": "id",
          "type": "number",
          "required": true
        },
        {
          "name": "name",
          "type": "string",
          "required": true
        },
        {
          "name": "description",
          "type": "string",
          "required": false,
          "max": 200
        }
      ],
      "permissions": {}
    },
    {
      "name": "producs",
      "fields": [
        {
          "name": "id",
          "type": "number",
          "required": true
        },
        {
          "name": "name",
          "type": "string",
          "required": true,
          "min": 2,
          "max": 100
        },
        {
          "name": "description",
          "type": "string",
          "required": false,
          "max": 1000
        },
        {
          "name": "price",
          "type": "number",
          "required": true,
          "min": 0
        },
        {
          "name": "stock",
          "type": "number",
          "required": false,
          "min": 0,
          "default": 0
        },
        {
          "name": "categoryId",
          "type": "reference:categories",
          "required": true
        },
        {
          "name": "imageUrl",
          "type": "image",
          "required": false
        }
      ],
      "permissions": {}
    }
  ],
  "users": [
    // Gebruikers komen hier
  ],
  "data": {
    "categories": [
      {
        "id": 1,
        "name": "Elektronica",
        "description": "Elektronische apparaten"
      },
      {
        "id": 2,
        "name": "Boeken",
        "description": "Leesmateriaal"
      },
      {
        "id": 3,
        "name": "Kleding",
        "description": "Mode en accessoires"
      }
    ],
    "products": [
      {
        "id": 1,
        "name": "Smartphone",
        "description": "Een high-end smartphone",
        "price": 499.99,
        "stock": 50,
        "categoryId": 1,
        "imageUrl": {
          "fileName": "smartphone.jpg",
          "contentType": "image/jpeg",
          "length": 12345,
          "base64": "9j4AAQSkZJRgABAQEAYABgAAD..."
        }
      },
      {
        "id": 2,
        "name": "Programmeerboek",
        "description": "Leer programmeren",
        "price": 29.99,
        "stock": 100,
        "categoryId": 2,
        "imageUrl": {
          "fileName": "programmeerboek.jpg",
          "contentType": "image/jpeg",
          "length": 54321,
          "base64": "9j4AAQSkZJRgABAQEAYABgAAD..."
        }
      }
    ]
  }
}

Best practices voor het toevoegen van initiële data

1. Gebruik realistische data

Zorg dat je voorbeelddata lijkt op de echte inhoud die je app straks gaat verwerken. Kies dus voor namen, beschrijvingen en afbeeldingen die representatief zijn. Dit maakt testen, ontwerpen en demonstreren veel makkelijker. Alle waardes vullen met "banaan" is in dit geval dus niet zo'n goed idee!

2. Volg je datastructuur strikt

Elk object in je data-sectie moet exact de structuur aanhouden die je in de fields van je collectie hebt gedefinieerd. Controleer types, verplichte velden en validatieregels goed.

3. Houd je ID’s uniek en voorspelbaar

Gebruik eenvoudige, oplopende getallen (bijv. 1, 2, 3…) als ID’s. Dit voorkomt verwarring en maakt het makkelijker om relaties te leggen.

4. Test je relaties expliciet

Als een product een categoryId: 2 heeft, zorg dan dat die categorie daadwerkelijk bestaat in de categories array. Ontbrekende referenties zorgen voor fouten of lege lijsten in je frontend.

5. Voeg afbeeldingen slim toe

Voeg niet bij elk item direct een grote afbeelding toe. Base64 is handig - maar zeer traag. Je kunt ook testdata genereren zonder afbeeldingen, en pas afbeeldingen toevoegen wanneer je dit écht nodig hebt om te testen. Wil je testen met een lichtgewicht afbeelding? Dan kun je onze voorbeeld-code gebruiken, deze is slechts 5KB.

Voorbeeld JSON kleine afbeelding
"imageUrl": {
  "fileName": "tiny_file.jpg",
  "contentType": "image/png",
  "length": 6936,
  "base64": "iVBORw0KGgoAAAANSUhEUgAAAJwAAACYCAMAAAAm93BpAAADAFBMVEXw8/fw8vbhzavfyqf06NXZxKDLs5DfyaTUvJnJsIz37t7Su5j26tfdx6P+31LOt5Phy6r48+XryTjz4s3w8fLcxaH558vrxzfu3MPv7+3y5tLp1rrNtpHZwpz27dvx4cvs2cLeyqrPuJXqxDbz5M/l0bb48eLizbDWvpvx4MjXwZ3pwTfXwqHqvzT369ns1rb+8HnYpDnszTf38ODp0rLdxqjbxqP94XfuzEDz8+7n1Lbqyj315tP348Xq2L7uz0Xfwjvwxzrjz6769Ojfyq3821fjxjvoyjjzuTjuwTbovTbu8fjv3sf04MPw2rjl0LLbwqL+7XT94E7t5dn66c796Wf94FrxxDjtxTf45cjw3MDt277s2LvUupXRuJL94mT6113jz7PYv5r32WT94V/y9PPx38Tm07r94mvtyjvesDvdqznquDPnz67lzavQuZnXvpj94XD30VLwzjnitDny8Ofw6uDr38/bwJ7Gq4jz1VjpwlP33E7zy0npvkLluDbv7Ob968/z3r744U/93E3x0EvyyULw0zryvzfirjbmszTz8OD5zFn800v7zTvVoDjr6uj88Nv014752Wrx0U/80kHtuzTq5+Hdz7j73Wn12F73vj308+jt4tL15c3r3srRso350l795FvjvFT11j/aqz/o2sb57L395Zj75H3+62350Gr42kbluj34xjrz7Nr46Lbt1LL+5Hb52HPx0235zWL910n110btwUX28tj77dTu2K3756r63oTy2IT103n33XH+8WTuy17431bz0T/cpjb26c/37cf56qD74o/42HrqxnH81VXetEj28c/j287g1cT04qjXxKjSvqHSsYf821/96Vn6yE798t/z35yslXX+8XPuzGzy4bL58q3sz6fs1J3WuY724WHjymDyx1Xjt0Hm4Nfv58Dcv5LpzI3PrYTLqX/qz3vly073wkf5357jx5zArZH78Y/77ITbvnz98GuXgGrtxT7hzT3WuYe5ooXCqHXZtmXSukS8n0OkhEBog0ZqAAARDElEQVR42uyWMY6DMBBFjeTKcrGIFAuRjFeyjbahcRdZNKRE2sLlpqHyDaDlCOlSJek4544hyg1WmsLvBE//f41NEolEIpFIJBL/SFYu07SUBCOl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"
}

Tip: heb je geen zin om alle data te "bedenken"? Gooi je collectie in ChatGPT zodat het duidelijk is welke velden er gevuld moeten worden en vraag 'm om een JSON-dataset te genereren van x aantal items.

In de volgende sectie zullen we leren hoe je gebruikers toevoegt en configureert.